/**
 * Copyright(c) 2013 Jade Techonologies Co., Ltd.
 *
 * History:
 *   13-4-18 下午3:56 Created by dwzhang
 */
package com.jade.framework.security.license;

import java.util.Date;
import java.util.List;

/**
 * 功能模块。
 *
 * @author dwzhang
 * @version 1.0 13-4-18 下午3:56
 */
public interface Module extends Entity
{
    /**
     * 返回模块类型。
     *
     * @return 模块类型。
     */
    public String getType();

    /**
     * 返回模块所属的应用。
     *
     * @return 应用
     */
    public String getApp();

    /**
     * 到期时间
     *
     * @return [Date] 到期时间
     */
    public Date getExpiredDate();

    /**
     * 判断是否过期
     *
     * @return 是否过期
     */
    public boolean isExpired();

    /**
     * 是否是系统Module.
     *
     * @return 如果是系统Module返回true;否则返回false.
     */
    public boolean isSystem();

    /**
     * 获取指定的模块属性。
     *
     * @param name 属性名称
     * @return 模块属性。
     */
    public ModuleProperty getProperty(String name);

    /**
     * 获取所有的模块属性。
     *
     * @return 模块属性列表
     */
    public List<ModuleProperty> getProperties();
}
